The protection of digital content transferred between computers over a network is fundamentally important for many enterprises today. Enterprises attempt to secure this protection by implementing some form of Digital Rights Management (DRM) process. The DRM process often involves encrypting the piece of content (e.g., encrypting the binary form of the content) to restrict usage to those who have been granted a right to the content.
Cryptography is the traditional method of protecting digital content, such as data in transit across a network. In its typical application, cryptography protects digital content between two mutually trusting parties from thievery by attack on the data in transit. However, for many digital file transfer applications today (e.g., for the transfer of audio or video content), the paradigm has shifted, as a party that receives the content (i.e. the “receiving party”) might try to break the DRM encryption that the party that supplied the content (i.e., the “distributing party”) applied to the content. In addition, with the proliferation of network penetration attacks, a third party may obtain access to the receiving party's computer and thus to the protected content.
In addition to the encryption and decryption, digital content may need other layers of protection. Authentication is another important layer of protection. When receiving digital content, the receiver often needs to “authenticate” the source of the digital content. In other words, the receiver needs to verify the integrity of the digital content by ensuring that the content came from an authenticated source and was not tampered on its way to the receiver.
To date, several processes for authenticating the integrity of digital content have been proposed. These processes typically apply a hashing function to the plaintext version of the content in order to produce a hash digest (also called a hash or a digest), which is then used to produce a signature for the content. A fundamental property of all hash functions is that if two hashes are different, then the two inputs were different in some way. When two hashes are identical for the different inputs, it is a hash collision. It is the important in a cryptographic system that the hash function has a very low collision probability.
Traditional integrity verification processes are computationally intensive, especially for portable devices with limited computational resources. Therefore, there is a need in the art for an integrity verification process that is less computationally intensive. Ideally, such a process would allow a portable device to quickly verify the integrity of digital content it receives.